// Learn TypeScript:
//  - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
//  - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html

const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    @property(cc.Label)
    label: cc.Label = null;

    @property
    text: string = 'hello';


    //画笔 锚点00
    @property(cc.Sprite)
    pen: cc.Sprite = null;

    //预制体 画笔的一个点 锚点00  预制体没有放编辑器里 纯靠程序生成
    @property(cc.Prefab)
    write: cc.Prefab = null;


    //放置画笔 所画内容节点  这个节点和pen.node同级 锚点00
    @property(cc.Node)
    writenode: cc.Node = null;


    //画多少笔
    @property
    count: number = 0;

    //画笔起始位置 没用到这个变量
    @property
    position: number = 0;



 

    init(count){

        console.log("绘制函数调用")

    
         

		for(var i=0;i<=count;i++){
		
			//cc.log(i)
			let node: number[] = [];  //声明数组 不赋值

            
			
			node[i] = cc.instantiate(this.write);

			//画笔的？ //这样写就能跟随画笔轨迹
			node[i].x=this.pen.node.x
			node[i].y=this.pen.node.y
			
			//画笔粗细
			node[i].width=5
			node[i].height=5
			
			//cc.log(node[i].scale)
			//node[i].scale=cc.v2(3, 3)
			
			
			//cc.log(node[i])


        //这种写法只能记住画笔最后的位置 不能记录住画笔轨迹 
        //不把这个放进循环里 
        //还是放进for循环里
		//this.writenode.x =this.pen.node.x
        //this.writenode.y =this.pen.node.y
        //所以思路是画一次 函数触发一次 执行一次
        //

        console.log(this.writenode.x)

		
            


			this.writenode.addChild(node[i])
		}
	 
	 
	 }
  

    // LIFE-CYCLE CALLBACKS:

    onLoad () {

       


        //当手指触点落在目标节点区域内时。
        this.pen.node.on('touchstart',this.onTouch,this)

        //当手指在屏幕上移动时。      
        this.pen.node.on('touchmove',this.onTouchMove,this)
        //当手指在目标节点区域内离开屏幕时。
        this.pen.node.on('touchend',this.onTouchEnd,this)
        //当手指在目标节点区域外离开屏幕时。
        this.pen.node.on('touchcancel',this.onTouchCancel,this)
       

        //
        

        


        

    }
    onTouch(e : cc.Event.EventTouch){
        //cc.log("点击到 并显示触发位置"+"x值是"+e.getLocationX(),"y值是"+e.getLocationY())
    }
    onTouchMove(e : cc.Event.EventTouch){

        this.count= this.count +1


        this.pen.node.x=e.getLocationX()
       
        this.pen.node.y=e.getLocationY()

        //画了条直线
        //this.init(500)
        console.log("触发了多少次 这个函数"+ this.count)
        this.init(this.count)
        
        
        
        //cc.log("拖拽到 "+"x值是"+e.getLocationX(),"y值是"+e.getLocationY())
    }

    onTouchEnd(e : cc.Event.EventTouch){
        this.pen.node.x=e.getLocationX()
        
        this.pen.node.y=e.getLocationY()
        //cc.log("松手了 "+"x值是"+e.getLocationX(),"y值是"+e.getLocationY())


        //函数放在这个位置 是做结算
        //缺点 函数放在这 不能运行一次执行一次 位置
        //this.init(this.count)
    }

    onTouchCancel(e : cc.Event.EventTouch){
        //cc.log("离开屏幕 "+"x值是"+e.getLocationX(),"y值是"+e.getLocationY())

    }

    start () {
        

    }

    update (dt) {


        


    }
}
